<?php

class PaginacionUtil extends CApplicationComponent{
	
	public function buscarRegistrosPaginados($indiceRegistroInicio,$numeroRegistrosPagina,$criteria,$modelo){
		$criteria=$this->prepararCriteria($indiceRegistroInicio, $numeroRegistrosPagina, $criteria,$modelo);
		return $modelo->findAll($criteria);
	}
	
	public function generarArrayRetornoDataTables($totalRecords,$data,$sEcho,$totalDisplayRecords){
		$paginacionData=array(
				"iTotalRecords"=>$totalRecords,
				"aaData"=>$data,
				"sEcho"=>$sEcho,
				"iTotalDisplayRecords"=>$totalDisplayRecords);
		return $paginacionData;
	}
		
	private function prepararCriteria($indiceRegistroInicio,$numeroRegistrosPagina,$criteria,$modelo){
		//echo "indice registro de inicio:$indiceRegistroInicio numeroReg:$numeroRegistrosPagina";
		$count=$modelo->count($criteria);
		$paginaActual=ceil($indiceRegistroInicio/$numeroRegistrosPagina);		
		$pages=new CPagination($count);
		$pages->currentPage=$paginaActual;
		$pages->pageSize=$numeroRegistrosPagina;
		$pages->applyLimit($criteria);		
		return $criteria;
	}
	
	
	
	
}